package IO;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 找到符合条件的文件夹，并且询问是否需要删除操作
 */
public class FindAndDelete {
    public static void main(String[] args) throws IOException {
        Scanner sc=new Scanner(System.in);
        String rootpath="D:\\桌面文件\\java课程\\课程资料\\javaweb";
        //以.txt结尾的文件
        String condition=".txt";
        //存放符合条件的文件列表

        List<File> resultList =new ArrayList<>();

        //遍历整棵树，找到符合条件的文件存放到结果集中
        File rootFile=new File(rootpath);
        traversal(rootFile,condition,resultList);
        //查看所有符合条件的文件
        System.out.println(resultList);

        //针对每一个符合的文件，询问用户是否需要删除
        for (File file:resultList){
            //询问是否删除
            System.out.println("是否需要删除该文件"+file.getCanonicalPath());
            if (!sc.hasNextBoolean()){
                //如果用户啥也没填，就直接退出
                System.out.println("退出操作~~");
                return;
                }
            boolean isDelete=sc.nextBoolean();
            if (isDelete){
                file.delete();
                System.out.println("删除文件"+file.getName()+"成功");
            }

        }
    }

    /**
     * 判断文件是否以condition结尾，符合条件就存放到结果集中
     * @param dirFile
     * @param condition
     * @param resultList
     */
    private static void traversal(File dirFile,String condition, List<File> resultList) {
        File[] files=dirFile.listFiles();
        //空文件
        if (files==null){
            return;
        }
        for (File file:files) {
            //File是文件夹
            if (file.isDirectory()){
                traversal(file,condition,resultList);
            } else if (file.isFile()) {
                //File是文件
                //判断文件是否是传入的condition结尾
                String name=file.getName();
                if (name.endsWith(condition)){
                    //文件符合条件，存放到结果集
                    resultList.add(file);
                }
            }

        }
    }
}
